import {BrowserModule} from '@angular/platform-browser';
import {ErrorHandler, NgModule} from '@angular/core';
import {IonicApp, IonicErrorHandler, IonicModule} from 'ionic-angular';

import {MyApp} from './app.component';
import {HomePage} from '../pages/home/home';
import {NativePage} from '../pages/native/native';
import {NativeStatusBarPage} from '../pages/native/status-bar/status-bar';
import {NativeToastPage} from '../pages/native/toast/toast';
import {NativeCameraPage} from '../pages/native/camera/carema';
import {NativePhotoLibraryPage} from '../pages/native/photo-library/photo-library';

import {StatusBar} from '@ionic-native/status-bar';
import {SplashScreen} from '@ionic-native/splash-screen';
import {Badge} from '@ionic-native/badge';
import {Toast} from '@ionic-native/toast';
import {Camera} from '@ionic-native/camera';
import {PhotoLibrary} from '@ionic-native/photo-library';

// import {CDVPhotoLibraryPipe} from '../common/pipe/cdvphotolibrary'

@NgModule({
  //数组类型的选项, 用来声明属于这个模块的指令,管道等等.
  declarations: [
    MyApp,
    HomePage,
    NativePage,
    NativeStatusBarPage,
    NativeToastPage,
    NativeCameraPage,
    NativePhotoLibraryPage,

    // CDVPhotoLibraryPipe
  ],
  //我们的模块需要依赖的一些其他的模块,这样做的目的使我们这个模块
  //可以直接使用别的模块提供的一些指令,组件等等.
  imports: [
    BrowserModule,
    IonicModule.forRoot(MyApp),
  ],
  //数组类型选项, 指定了这个模块启动的时候应该启动的组件.当然这些组件会被自动的加入到entryComponents中去
  bootstrap: [IonicApp],
  //数组类型的选项,指定一系列的组件,这些组件将会在这个模块定义的时候进行编译
  //Angular会为每一个组件创建一个ComponentFactory然后把它存储在ComponentFactoryResolver
  entryComponents: [
    MyApp,
    HomePage,
    NativePage,
    NativeStatusBarPage,
    NativeToastPage,
    NativeCameraPage,
    NativePhotoLibraryPage
  ],
  //这个选项是一个数组,需要我们列出我们这个模块的一些需要共用的服务
  //然后我们就可以在这个模块的各个组件中通过依赖注入使用了.
  providers: [
    StatusBar,
    SplashScreen,
    Badge,
    Toast,
    Camera,
    PhotoLibrary,
    {provide: ErrorHandler, useClass: IonicErrorHandler}
  ]
})
export class AppModule {

}
